package com.glela.api.sms.chuanglan;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.URLDecoder;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.SimpleHttpConnectionManager;
import org.apache.commons.httpclient.URI;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpClientParams;

import com.glela.api.sms.util.SmsConfig;

/**
 * 
 * @param url
 *            应用地址，类似于http://ip:port/msg/
 * @param account
 *            账号
 * @param pswd
 *            密码
 * @param mobile
 *            手机号码，多个号码使用","分割
 * @param msg
 *            短信内容
 * @param needstatus
 *            是否需要状态报告，需要true，不需要false
 * @return 返回值定义参见HTTP协议文档
 * @throws Exception
 */
public class HttpSender {
	
	private String account;
	
	private String pswd ;
	
	private String url ;
	
	private boolean needstatus = true ;
	
	public void setAccount(String account) {
		this.account = account;
	}

	public void setPswd(String pswd) {
		this.pswd = pswd;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	/**
	 * 初始化发送短信
	 * @param account  账号
	 * @param pswd  密码 
	 * @param url  API接口
	 */
	public HttpSender(String account ,String pswd ,String url ) {
		// TODO 自动生成的构造函数存根
		this.account = account ;
		this.pswd = pswd ;
		this.url = url ;
	}
	
	/**
	 * 初始化发送短信
	 * @param account  账号
	 * @param pswd  密码
	 */
	public HttpSender() {
		// TODO 自动生成的构造函数存根
		this.account = SmsConfig.account ;
		this.pswd = SmsConfig.pswd ;
		this.url = SmsConfig.url ;
	}
	
	/**
	 * 发送消息
	 * @author houmf
	 * @param mobile  手机号码，多个号码使用","分割
	 * @param msg  消息
	 * @return  -1  报错
	 * @throws Exception  
	 */
	public String batchSend( String mobile, String msg) {
		HttpClient client = new HttpClient(new HttpClientParams(), new SimpleHttpConnectionManager(true));
		GetMethod method = new GetMethod();
		try {
			URI base = new URI(url, false);
			method.setURI(new URI(base, "HttpBatchSendSM", false));
			method.setQueryString(new NameValuePair[] { new NameValuePair("account", account),
					new NameValuePair("pswd", pswd), new NameValuePair("mobile", mobile),
					new NameValuePair("needstatus", String.valueOf(needstatus)), new NameValuePair("msg", msg),
					new NameValuePair("extno", null), });
			int result = client.executeMethod(method);
			if (result == HttpStatus.SC_OK) {
				InputStream in = method.getResponseBodyAsStream();
				ByteArrayOutputStream baos = new ByteArrayOutputStream();
				byte[] buffer = new byte[1024];
				int len = 0;
				while ((len = in.read(buffer)) != -1) {
					baos.write(buffer, 0, len);
				}
				return URLDecoder.decode(baos.toString(), "UTF-8");
			}
		}catch(Exception e){
			
		} finally {
			method.releaseConnection();
		}
		return "-1";
	}

}